package com.wang.io;

import org.junit.jupiter.api.Test;

import java.io.File;
import java.io.IOException;

/**
 * File：用于在内存中描述磁盘文件
 */
public class TestFile {

    /**
     * 创建文件：
     *   1. 构造 File 对象：
     *     1) new File(String path)
     *     2) new File(File parent, String child)
     *     3) new File(String parent, String child)
     *   2. 创建磁盘文件：
     *     1) file.createNewFile()：
     */
    @Test
    public void test01() {
        try {
//            String filePath = "e:\\new1.txt";
//            File file = new File(filePath);
//            File file = new File(new File("e:\\"), "new2.txt");
            File file = new File("e:\\", "new3.txt");
            file.createNewFile();
            System.out.println("文件创建成功");  // 文件创建成功
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取文件信息：
     *   1. getName()：获取文件名称
     *   2. getAbsolutePath()：获取绝对路径
     *   3. getParent()：获取父级目录
     *   4. length()：获取文件大小(单位字节)
     *   5. exists()：磁盘文件是否存在
     *   6. isFile()：磁盘文件是否是文件
     *   7. isDirectory()：磁盘文件是否是目录
     */
    @Test
    public void test02() {
        File file = new File("e:\\new3.txt");
        System.out.println(file.getName());
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getParent());
        System.out.println(file.length());
        System.out.println(file.exists());
        System.out.println(file.isFile());
        System.out.println(file.isDirectory());
    }

    /**
     * 删除磁盘文件或目录：
     *  1. delete()
     */
    @Test
    public void test03() {
        File file = new File("e:\\new3.txt");
        if (file.exists()) {
            file.delete();
        }
    }

    /**
     * 目录操作：
     *   1. mkdir()：创建一级磁盘目录
     *   2. mkdirs()：创建多级磁盘目录
     * 在 java 编程中，目录是一种特殊的文件
     */
    @Test
    public void test04() {
        File dir1 = new File("e:\\newDir1");
        if (!dir1.exists()) {
            dir1.mkdir();
        }

        File dir2 = new File("e:\\newDir2\\a\\b\\c");
        if (!dir2.exists()) {
            dir2.mkdirs();
        }
    }

}
